/**
*
*
*\author Isabel Martín Herrero 48539974 S
*
*
**/
#include <iostream>
#include <string>

using namespace std;

/**
*\file ExcepcionSVG.h
*\brief Archivo .h de la clase ExcepcionSVG
*Archivo que contiene las excepciones de la clase Excepcion
*
**/

#ifndef _EXCEPTIONSVG_H_
#define _EXCEPTIONSVG_H_


/** \brief Clase ExceptionSVG
 *
 * Error en Figura
 */
class ExceptionSVG
{
public:
	/** \brief Metodo What() de la clase Excepcion
		* Virtual implementado por cada una de las hijas
		*/
   virtual string what() const =0;

protected:

private:

};

/** \brief Clase ExcepcionCoordenadaErronea
 *
 * Error en coordenadas
 */
class ExcepcionCoordenadaErronea: public ExceptionSVG
{
public:
/** \brief Metodo What() de la clase Excepcion
		* Virtual implementado por cada una de las hijas
		*/
   ExcepcionCoordenadaErronea(float, float);
   /** \brief Destructor de la clase Excepcion
		*destruye objetos de la clase excepcion
		*/
   ~ExcepcionCoordenadaErronea();
   /** \brief MetodogetX() de la clase Excepcion
		* DEvuelve la x
		*/
   float getX()const;
   /** \brief MetodogetY de la clase Excepcion
		* DEvuelve la y
		*/
   float getY()const;
   /** \brief Metodo What() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string what()const;

protected:

private:
/** \brief Miembro x
		* punto x de la coordenada
		*/
   float x;
   /** \brief Miembro y
		* punto y de la coordenada
		*/
   float y;

};

/** \brief Clase ExcepcionFiguraDesconocida
 *
 * Error en Figura
 */
class ExcepcionFiguraDesconocida: public ExceptionSVG
{
public:
/** \brief Constructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ExcepcionFiguraDesconocida(string);
   /** \brief Destructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ~ExcepcionFiguraDesconocida();
   /** \brief Metodo getFiguraDesconocida()de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string getFiguraDesconocida() const;
   /** \brief Metodo What() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string what() const;

protected:

private:
 /** \brief Miembro queFigura
		* nombre de la figura desconocida
		*/
   string queFigura;

};


/** \brief Clase ExceptionOperacionDesconocida
 *
 * Error en Operacion
 */
class ExceptionOperacionDesconocida: public ExceptionSVG
{
public:
/** \brief Constructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ExceptionOperacionDesconocida(string);
   /** \brief Destructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ~ExceptionOperacionDesconocida();
   /** \brief Metodo getOperacionDesconocida() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string getOperacionDesconocida()const;
   /** \brief Metodo What() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string what()const;

protected:

private:
/** \brief Miembro queOperacion
		* nombre de la operacion desconocida
		*/
   string queOperacion;

};


/** \brief Clase ExcepcionValorNoValido
 *
 * Error en Valor
 */
class ExcepcionValorNoValido: public ExceptionSVG
{
public:
 /** \brief Constructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ExcepcionValorNoValido(float, string);
    /** \brief Destructor de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   ~ExcepcionValorNoValido();
    /** \brief getValor() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   float getValor()const;
    /** \brief getMotivo() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string getMotivo()const;
    /** \brief Metodo What() de la clase Excepcion
		* Metodo heredado de excepcionsvg
		*/
   string what()const;

protected:

private:
/** \brief Miembro valor
		* valor incorrecto
		*/
   float valor;
   /** \brief Miembro queOcurrio
		* nque ocurrio
		*/
   string queOcurrio;

};

#endif // _EXCEPTIONSVG_H_
